iT邦幫忙

2023 iThome 鐵人賽

DAY 9
0
DevOps

搞定Docker網路系列 第 9

Docker的網路-Dockerfile的寫法

  • 分享至 

  • xImage
  •  

參考:https://docs.docker.com/engine/reference/builder/#run---network

我們很多網路的設定都是在docker run時附加上去的,其實在image打包時就可以設定好,另外一個地方就是docker compose yaml。

這邊使用官方的範例改寫的方式,來練習Dockerfile帶入network的寫法

FROM ubuntu
RUN apt-get update \
  && apt-get upgrade -y \
  && apt-get install -y inetutils-ping curl dnsutils net-tools traceroute --no-install-recommends \
  && rm -rf /var/lib/apt/lists/*
RUN --network=intra 
CMD ["sh"]

這是前幾個範例有提到tedyang/ubuntu:1120912的Dockerfile,只是增加了--network=intra,我們看會有什麼結果

docker build -t tedyang/ubuntu:test1 .

為何在Dockerfile指定network會有錯誤呢,因為Dockerfile的network只能包none跟host。

就是沒有網路或是複製主機環境的網路。

我們重新撰寫:

FROM ubuntu
RUN apt-get update \
  && apt-get upgrade -y \
  && apt-get install -y inetutils-ping curl dnsutils net-tools traceroute --no-install-recommends \
  && rm -rf /var/lib/apt/lists/*
RUN --network=none
CMD ["sh"]

這次就成功了。

這邊看到一個奇怪的現象,已經在包image宣告沒有網卡了,但為什麼還是有?這邊理解是在docker run時,network預設會上bridge,所以直接覆蓋了image的設定。

所以還是比較建議從docker compose yaml撰寫network的設定。


上一篇
Docker的網路-Application Proxy
下一篇
Docker的網路-Docker Compose yaml的寫法(external與internal篇)
系列文
搞定Docker網路31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言